﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using GestionEducativa.Models;

namespace GestionEducativa.Controllers
{
    public class ReporteController : Controller
    {
        //
        // GET: /Reporte/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult GenerarReporteFactura()
        {
            ViewData["tipo"] = new SelectList(ReporteViewModel.TiposReportesFactura());

            return View();
        }

        [HttpPost]
        public ActionResult ReporteGeneradoFactura(string fechainicio, string fechafinal, 
            string matricula, string id)
        {
            //Todas la facturas 
            if (string.IsNullOrWhiteSpace(fechainicio) && string.IsNullOrWhiteSpace(fechafinal)
                && string.IsNullOrWhiteSpace(matricula) && string.IsNullOrWhiteSpace(id))
            {
                return
                    View(ReporteViewModel.AdactarViewFacturas(ReporteViewModel.TraerTodasFacturas()));
            }
            //Por alumno con rango de fecha
            if (!string.IsNullOrWhiteSpace(fechainicio) && !string.IsNullOrWhiteSpace(fechafinal)
                && !string.IsNullOrWhiteSpace(matricula))
            {
                return
                    View(ReporteViewModel.AdactarViewFacturas(ReporteViewModel.TraerFacturasAlumnoRangoFecha(matricula, 
                    Convert.ToDateTime(fechainicio), Convert.ToDateTime(fechafinal))));
            }
            //Facturas por rango de fecha
            if (!string.IsNullOrWhiteSpace(fechainicio) && !string.IsNullOrWhiteSpace(fechafinal))
            {
                return
                    View(ReporteViewModel.AdactarViewFacturas(ReporteViewModel.TraerFacturasRangoFechas
                (Convert.ToDateTime(fechainicio), Convert.ToDateTime(fechafinal))));
            }

            //Factura por alumno
            if (!string.IsNullOrWhiteSpace(matricula))
            {
                return
                    View(ReporteViewModel.AdactarViewFacturas(ReporteViewModel.TraerFacturasAlumno(matricula)));
            }
            //Factura Unica
            if (!string.IsNullOrWhiteSpace(id))
            {
                return
                    View(ReporteViewModel.AdactarViewFacturas(ReporteViewModel.TraerUnicaFactura(Convert.ToInt32(id))));
            }
            return
                View();           
        }

        [HttpGet]
        public ActionResult DetalleFactura(string idf)
        {
            return 
                View(ReporteViewModel.DetalleFacturaRep(Convert.ToInt32(idf)));
        }

        public ActionResult GenerarReporteRecibo()
        {
            ViewData["tipo"] = new SelectList(ReporteViewModel.TiposReportesRecivo());

            return View();
        }

        [HttpPost]
        public ActionResult ReporteGeneradoRecibo(string fechainicio, string fechafinal,
            string matricula, string idr, string idf)
        {
            //Todos los recibos
            if (string.IsNullOrWhiteSpace(fechainicio) && string.IsNullOrWhiteSpace(fechafinal)
                && string.IsNullOrWhiteSpace(matricula) && string.IsNullOrWhiteSpace(idr)
                && string.IsNullOrWhiteSpace(idf))
            {
                return
                    View(ReporteViewModel.AdactarViewRecibos(ReporteViewModel.TraerTodosRecibos()));
            }
            //Recibos por rango de fecha alumnos
            if (!string.IsNullOrWhiteSpace(fechainicio) && !string.IsNullOrWhiteSpace(fechafinal)
                && !string.IsNullOrWhiteSpace(matricula))
            {
                return
                    View(ReporteViewModel.AdactarViewRecibos(ReporteViewModel.TraerRecibosAlumnoRangoFecha
                (matricula, Convert.ToDateTime(fechainicio), Convert.ToDateTime(fechafinal))));
            }
            //Recibos por rango de fecha facturas
            if (!string.IsNullOrWhiteSpace(fechainicio) && !string.IsNullOrWhiteSpace(fechafinal)
                && !string.IsNullOrWhiteSpace(idf))
            {
                return
                    View(ReporteViewModel.AdactarViewRecibos(ReporteViewModel.TraerRecibosFactruasRangoFecha
                (Convert.ToInt32(idf), Convert.ToDateTime(fechainicio), Convert.ToDateTime(fechafinal))));
            }
            //Recibos por rango de fecha
            if (!string.IsNullOrWhiteSpace(fechainicio) && !string.IsNullOrWhiteSpace(fechafinal))
            {
                return
                    View(ReporteViewModel.AdactarViewRecibos(ReporteViewModel.TraerRecibosRangoFecha
                (Convert.ToDateTime(fechainicio), Convert.ToDateTime(fechafinal))));
            }

            //Recibo por alumno
            if (!string.IsNullOrWhiteSpace(matricula))
            {
                return
                    View(ReporteViewModel.AdactarViewRecibos
                    (ReporteViewModel.TraerRecibosPorAlumno(matricula)));
            }
            //Recibo Unico
            if (!string.IsNullOrWhiteSpace(idr))
            {
                return
                    View(ReporteViewModel.AdactarViewRecibos
                    (ReporteViewModel.TraerReciboUnico(Convert.ToInt32(idr))));
            }
            //Recibos por Factura
            if (!string.IsNullOrWhiteSpace(idf))
            {
                return
                    View(ReporteViewModel.AdactarViewRecibos
                    (ReporteViewModel.TraerRecibosPorFactura(Convert.ToInt32(idf))));
            }

            return
                View();
        }
    }
}
